home *** CD-ROM | disk | FTP | other *** search
/ io Programmo 16 / IOPROG_16.ISO / soft / macaxsdk / macsdk.hqx / ActiveX DR3 SDK / ActiveX SDK / Sample Containers / SimpleContainer / Menus.c / Menus.c
Encoding:
Text File  |  1997-07-18  |  13.9 KB  |  688 lines  |  [TEXT/CWIE]

  1. // >>> ⌐ 1996-1997 Microsoft Corporation.  All rights reserved. <<<
  2.  
  3. #include <drag.h>
  4. #include <Menus.h>
  5. #include "ActiveXAPI.h"
  6. #include "ExplorerAPI.h"
  7. #include "CanDoAPI.h"
  8. #include "InfoAPI.h"
  9. #include "App.h"
  10. #include "Document.h"
  11. #include "Figure.h"
  12. #include "Menus.h"
  13. #include "MenusPrivate.h"
  14. #include "ObjectInfoWin.h"
  15. #include "Print.h"
  16.  
  17.  
  18. //    menus
  19. static void DoAppleMenu(short MenuItem);
  20. static void DoFileMenu(short MenuItem);
  21. static void DoEditMenu(short MenuItem);
  22. static void DoNavigateMenu(short MenuItem);
  23. static void DoPanesMenu(short MenuItem);
  24.  
  25. //    menu items
  26. static void    DoAboutDialog(void);
  27. static void    DoFindDialog(AXRefID SiteID);
  28. static void    DoGoToDialog(AXRefID SiteID);
  29. static void    DoInsertDialog(void);
  30.  
  31.  
  32. //
  33. //    SetupMenus
  34. //
  35. void SetupMenus(Boolean UseIEMBar)
  36. /*
  37.     read a menubar from the resource fork and make it the current menu.
  38. */
  39. {
  40.     static Boolean    DoAppleMenu = true;
  41.     Handle            menuBar;
  42.  
  43.     /* Add the menu bar
  44.     */
  45.     menuBar = GetNewMBar(UseIEMBar ? rIEMenuBar : rMenuBar);        /*read menus into menu bar*/
  46.     SetMenuBar(menuBar);                    /*install menus*/
  47.     DisposeHandle((Handle) menuBar);
  48.  
  49.     if (DoAppleMenu)    /* add DA names to Apple menu exactly ONCE */
  50.     {
  51.         AppendResMenu(GetMenuHandle(mApple), 'DRVR');
  52.         DoAppleMenu = false;
  53.     }
  54.  
  55.     DrawMenuBar();
  56. }
  57.  
  58.  
  59. //
  60. //    AdjustMenus
  61. //
  62. void AdjustMenus(void)
  63. {
  64.     FigureDataPtr    FocusFigure = gAppData.FocusFigure;
  65.     FigureDataPtr    SelectedFigure = gAppData.SelectedFigure;
  66.     MenuHandle        WhichMenu;
  67.     WindowRef        FrontW = FrontWindow();
  68.     DocDataPtr        CurrentDoc = nil;
  69.  
  70.     if ( FrontW && FrontW != gInfoWindow )
  71.         CurrentDoc = (DocDataPtr) GetWRefCon(FrontW);
  72.             
  73.     WhichMenu = GetMenuHandle(mFile);
  74.     if (WhichMenu)
  75.     {
  76.         EnableItem(WhichMenu, iNew);
  77.  
  78.         if (CurrentDoc)
  79.         {
  80.             EnableItem(WhichMenu, iInsert);
  81.             EnableItem(WhichMenu, iSaveAs);
  82.             EnableItem(WhichMenu, iPageSetup);
  83.             EnableItem(WhichMenu, iPrint);
  84.             
  85.             if (CurrentDoc && CurrentDoc->Dirty)
  86.             {
  87.                 EnableItem(WhichMenu, iSave);
  88.             }
  89.             else
  90.             {
  91.                 DisableItem(WhichMenu, iSave);
  92.             }
  93.         }
  94.         else
  95.         {
  96.             DisableItem(WhichMenu, iInsert);
  97.             DisableItem(WhichMenu, iSaveAs);
  98.             DisableItem(WhichMenu, iSave);
  99.             DisableItem(WhichMenu, iPageSetup);
  100.             DisableItem(WhichMenu, iPrint);
  101.         }
  102.  
  103.  
  104.         if (FrontWindow())
  105.             EnableItem(WhichMenu, iClose);
  106.         else    
  107.             DisableItem(WhichMenu, iClose);
  108.  
  109.         EnableItem(WhichMenu, iQuit);
  110.     }
  111.     
  112. #if 0
  113.     if (WhichMenu && SelectedFigure)
  114.     {
  115.         if (AX_Can(SelectedFigure->Site, NULL, kAXPageSetupCanDoID) == S_OK)
  116.             EnableItem(WhichMenu, iPageSetup);
  117.         else
  118.             DisableItem(WhichMenu, iPageSetup);
  119.  
  120.         if (AX_Can(SelectedFigure->Site, NULL, kAXPrintCanDoID) == S_OK)
  121.             EnableItem(WhichMenu, iPrint);
  122.         else
  123.             DisableItem(WhichMenu, iPrint);
  124.     }
  125.     else
  126.     {
  127.         DisableItem(WhichMenu, iPageSetup);
  128.         DisableItem(WhichMenu, iPrint);
  129.     }
  130. #endif
  131.     
  132.     WhichMenu = GetMenuHandle(mEdit);
  133.     if (WhichMenu && FocusFigure)
  134.     {
  135.         if (AX_Can(FocusFigure->Site, NULL, kAXUndoCanDoID) == S_OK)
  136.             EnableItem(WhichMenu, iUndo);
  137.         else
  138.             DisableItem(WhichMenu, iUndo);
  139.  
  140.         if (AX_Can(FocusFigure->Site, NULL, kAXCutCanDoID) == S_OK)
  141.             EnableItem(WhichMenu, iCut);
  142.         else
  143.             DisableItem(WhichMenu, iCut);
  144.  
  145.         if (AX_Can(FocusFigure->Site, NULL, kAXCopyCanDoID) == S_OK)
  146.             EnableItem(WhichMenu, iCopy);
  147.         else
  148.             DisableItem(WhichMenu, iCopy);
  149.  
  150.         if (AX_Can(FocusFigure->Site, NULL, kAXPasteCanDoID) == S_OK)
  151.             EnableItem(WhichMenu, iPaste);
  152.         else
  153.             DisableItem(WhichMenu, iPaste);
  154.  
  155.         if (AX_Can(FocusFigure->Site, NULL, kAXClearCanDoID) == S_OK)
  156.             EnableItem(WhichMenu, iClear);
  157.         else
  158.             DisableItem(WhichMenu, iClear);
  159.  
  160.         if (AX_Can(FocusFigure->Site, NULL, kAXSelectAllCanDoID) == S_OK)
  161.             EnableItem(WhichMenu, iSelectAll);
  162.         else
  163.             DisableItem(WhichMenu, iSelectAll);
  164.  
  165.         if (AX_Can(FocusFigure->Site, NULL, kAXFindCanDoID) == S_OK)
  166.             EnableItem(WhichMenu, iFind);
  167.         else
  168.             DisableItem(WhichMenu, iFind);
  169.         
  170.     }
  171.     else if (WhichMenu)
  172.     {
  173.         DisableItem(WhichMenu, iUndo);
  174.         DisableItem(WhichMenu, iCut);
  175.         DisableItem(WhichMenu, iCopy);
  176.         DisableItem(WhichMenu, iPaste);
  177.         DisableItem(WhichMenu, iClear);
  178.         DisableItem(WhichMenu, iSelectAll);
  179.         DisableItem(WhichMenu, iFind);
  180.     }
  181.     
  182.     if ( WhichMenu && SelectedFigure )
  183.     {
  184.         char    UserName[64];
  185.         AXErrorCode err = AX_GetIDString(SelectedFigure->Site, 0, kAXUserName, 64, UserName);
  186.         if ( err == kAXNoErr )
  187.         {
  188.             char    ItemText[64] = "Show Object Info for ";
  189.             
  190.             strcat(ItemText, UserName);    
  191.             EnableItem(WhichMenu, iShowDesc);
  192.             SetMenuItemText(WhichMenu, iShowDesc, CtoPstr(ItemText));
  193.         }
  194.         else
  195.             DisableItem(WhichMenu, iShowDesc);
  196.     }
  197.     else if (WhichMenu)
  198.     {
  199.         DisableItem(WhichMenu, iShowDesc);
  200.     }
  201.  
  202.     WhichMenu = GetMenuHandle(mNavigate);
  203.     if (WhichMenu && FocusFigure)
  204.     {
  205.         if (AX_Can(FocusFigure->Site, NULL, kAXGoForwardCanDoID) == S_OK)
  206.             EnableItem(WhichMenu, iGoForward);
  207.         else
  208.             DisableItem(WhichMenu, iGoForward);
  209.  
  210.         if (AX_Can(FocusFigure->Site, NULL, kAXGoBackCanDoID) == S_OK)
  211.             EnableItem(WhichMenu, iGoBackward);
  212.         else
  213.             DisableItem(WhichMenu, iGoBackward);
  214.  
  215.         if (AX_Can(FocusFigure->Site, NULL, kAXCancelCanDoID) == S_OK)
  216.             EnableItem(WhichMenu, iCancelLoad);
  217.         else
  218.             DisableItem(WhichMenu, iCancelLoad);
  219.  
  220.         if (AX_Can(FocusFigure->Site, NULL, kAXReloadCanDoID) == S_OK)
  221.             EnableItem(WhichMenu, iReload);
  222.         else
  223.             DisableItem(WhichMenu, iReload);
  224.  
  225.         if (AX_IEHasBasicInterface(FocusFigure->Site))
  226.             EnableItem(WhichMenu, iGoTo);
  227.         else
  228.             DisableItem(WhichMenu, iGoTo);
  229.     }
  230.  
  231.     WhichMenu = GetMenuHandle(mPanes);
  232.     if (WhichMenu && FocusFigure)
  233.     {
  234.         if (AX_IEHasBasicInterface(FocusFigure->Site))
  235.         {
  236.             EnableItem(WhichMenu, iShowAddress);
  237.             EnableItem(WhichMenu, iShowStatus);
  238.         }
  239.         else
  240.         {
  241.             DisableItem(WhichMenu, iShowAddress);
  242.             DisableItem(WhichMenu, iShowStatus);
  243.         }
  244.     }
  245. }
  246.  
  247.  
  248. //
  249. //    DoMenu
  250. //
  251. void DoMenu(long menuResult)
  252. {
  253.     short    menuID;
  254.     short    menuItem;
  255.     
  256.     menuID = HiWord(menuResult);    
  257.     menuItem = LoWord(menuResult);    
  258.  
  259.     switch (menuID) 
  260.     {
  261.         case mApple: 
  262.             DoAppleMenu(menuItem);
  263.             break;
  264.  
  265.         case mFile:  
  266.             DoFileMenu(menuItem);
  267.             break;
  268.  
  269.         case mEdit:  
  270.             DoEditMenu(menuItem);
  271.             break;
  272.  
  273.         case mNavigate:
  274.             DoNavigateMenu(menuItem);
  275.             break;
  276.  
  277.         case mPanes:
  278.             DoPanesMenu(menuItem);
  279.             break;
  280.  
  281.         }
  282.     HiliteMenu(0);                    
  283. }  
  284.  
  285.  
  286. //
  287. //    DoAppleMenu
  288. //
  289. void DoAppleMenu(short inMenuItem)
  290. {
  291.     Str255        accName;
  292.     short        accNumber;
  293.  
  294.     switch (inMenuItem)
  295.     {
  296.         case iAbout:
  297.             DoAboutDialog();
  298.             break;
  299.         default:
  300.             GetMenuItemText(GetMenuHandle(mApple), inMenuItem, accName);
  301.             accNumber = OpenDeskAcc(accName);
  302.             break;
  303.     }
  304. }
  305.  
  306.  
  307. //
  308. //    DoFileMenu
  309. //
  310. void DoFileMenu(short MenuItem)
  311. {
  312.     FigureDataPtr    FocusFigure = gAppData.FocusFigure;
  313.     
  314.     switch (MenuItem)
  315.     {
  316.         case iNew:
  317.             CreateDocument(&gAppData.Documents, "\pUntitled");
  318.             break;
  319.         case iOpen:
  320.             OpenDocument();
  321.             break;
  322.         case iInsert:
  323.             DoInsertDialog();
  324.             break;
  325.         case iClose:
  326.             DoClose(FrontWindow());
  327.             break;
  328.         case iSave:
  329.             DoSave((DocDataPtr) GetWRefCon(FrontWindow()));
  330.             break;
  331.         case iSaveAs:
  332.             DoSaveAs((DocDataPtr) GetWRefCon(FrontWindow()));
  333.             break;
  334.         case iPageSetup:
  335.             DoPageSetup((DocDataPtr) GetWRefCon(FrontWindow()));
  336. //            AX_Do(FocusFigure->Site, NULL, kAXPageSetupCanDoID, NULL);
  337.             break;
  338.         case iPrint:
  339.             DoPrintDocument((DocDataPtr) GetWRefCon(FrontWindow()));
  340. //            AX_Do(FocusFigure->Site, NULL, kAXPrintCanDoID, NULL);
  341.             break;
  342.         case iQuit:
  343.             gAppData.Quitting = true;
  344.             break;
  345.     }
  346. }
  347.  
  348. #define ALRT_SaveChangesClosing 201
  349. #define ANSWER_SAVE                1
  350. #define ANSWER_CANCEL            2
  351. //
  352. //    DoClose 
  353. //
  354. void DoClose(WindowPtr inWindow)
  355. {
  356.     if ( inWindow == gInfoWindow )
  357.         CloseInfoWindow(FrontWindow());
  358.     else
  359.     {
  360.         DocDataPtr    CurrentDoc = (DocDataPtr) GetWRefCon(inWindow);
  361.  
  362.         Boolean    closeIt = true;
  363.         
  364.         if (CurrentDoc->Dirty)
  365.         {
  366.             short    answer;
  367.             
  368.             ParamText(CurrentDoc->HasSaveFile ? CurrentDoc->SaveFile.name : "\pUntitled",
  369.                     "\p", "\p", "\p");
  370.             answer = CautionAlert(ALRT_SaveChangesClosing, nil);
  371.             
  372.             if (answer == ANSWER_SAVE)
  373.             {
  374.                 if (CurrentDoc->HasSaveFile)
  375.                 {
  376.                     DoSave(CurrentDoc);
  377.                 }
  378.                 else
  379.                 {
  380.                     closeIt = DoSaveAs(CurrentDoc);
  381.                 }
  382.                 
  383.             }
  384.             else if (answer == ANSWER_CANCEL)
  385.             {
  386.                 closeIt = false;
  387.             }            
  388.         }
  389.                 
  390.         if (closeIt)
  391.         {
  392.             ActivateDocument(CurrentDoc, kAXWindowDeactivate, NULL);
  393.             DisposeDocument(CurrentDoc);
  394.         }
  395.     }
  396. }
  397.  
  398.  
  399. //
  400. //    DoEditMenu
  401. //
  402. void DoEditMenu(short MenuItem)
  403. {
  404.     FigureDataPtr    FocusFigure = gAppData.FocusFigure;
  405.     FigureDataPtr    SelectedFigure = gAppData.SelectedFigure;
  406.     WindowPtr        FrontWin = FrontWindow();
  407.  
  408.     if (FocusFigure)
  409.     {
  410.         switch (MenuItem)
  411.         {
  412.             case iUndo:
  413.                 AX_Do(FocusFigure->Site, NULL, kAXUndoCanDoID, NULL);
  414.                 break;
  415.             case iCut:
  416.                 AX_Do(FocusFigure->Site, NULL, kAXCutCanDoID, NULL);
  417.                 break;
  418.             case iCopy:
  419.                 AX_Do(FocusFigure->Site, NULL, kAXCopyCanDoID, NULL);
  420.                 break;
  421.             case iPaste:
  422.                 AX_Do(FocusFigure->Site, NULL, kAXPasteCanDoID, NULL);
  423.                 break;
  424.             case iClear:
  425.                 AX_Do(FocusFigure->Site, NULL, kAXClearCanDoID, NULL);
  426.                 break;
  427.             case iSelectAll:
  428.                 AX_Do(FocusFigure->Site, NULL, kAXSelectAllCanDoID, NULL);
  429.                 break;
  430.             case iFind:
  431.                 DoFindDialog(FocusFigure->Site);
  432.                 break;
  433.             default:
  434.                 break;
  435.         }
  436.     }
  437.     else if ( SelectedFigure )
  438.     {
  439.         switch (MenuItem)
  440.         {
  441.             case iShowDesc:
  442.                 OpenInfoWindow(SelectedFigure->Site);
  443.                 break;
  444.                 
  445.             default:
  446.                 break;
  447.         }
  448.     }
  449.     
  450. }
  451.  
  452.  
  453. //
  454. //    DoNavigateMenu
  455. //
  456. void DoNavigateMenu(short MenuItem)
  457. {
  458.     FigureDataPtr    FocusFigure = gAppData.FocusFigure;
  459.  
  460.     if (FocusFigure)
  461.     {
  462.         switch (MenuItem)
  463.         {
  464.             case iGoForward:
  465.                 AX_Do(FocusFigure->Site, NULL, kAXGoForwardCanDoID, NULL);
  466.                 break;
  467.             case iGoBackward:
  468.                 AX_Do(FocusFigure->Site, NULL, kAXGoBackCanDoID, NULL);
  469.                 break;
  470.             case iCancelLoad:
  471.                 AX_Do(FocusFigure->Site, NULL, kAXCancelCanDoID, NULL);
  472.                 break;
  473.             case iReload:
  474.                 AX_Do(FocusFigure->Site, NULL, kAXReloadCanDoID, NULL);
  475.                 break;
  476.             case iGoTo:
  477.                 DoGoToDialog(FocusFigure->Site);
  478.                 break;
  479.             default:
  480.                 break;
  481.         }
  482.     }
  483. }
  484.  
  485.  
  486. //
  487. //    DoPanesMenu
  488. //
  489. void DoPanesMenu(short MenuItem)
  490. {
  491.     static Boolean8    AddressVisible = true;
  492.     static Boolean8    StatusVisible = true;
  493.  
  494.     AXIEFeatureType    What = kAXBeginIEFeatureType;
  495.     Boolean            ShowIt;
  496.     FigureDataPtr    FocusFigure = gAppData.FocusFigure;
  497.  
  498.     if (FocusFigure)
  499.     {
  500.         switch (MenuItem)
  501.         {
  502.             case iShowAddress:
  503.                 ShowIt = AddressVisible = !AddressVisible;
  504.                 What = kAXIEAddressFeatureType;
  505.                 break;
  506.             case iShowStatus:
  507.                 ShowIt = StatusVisible = !StatusVisible;
  508.                 What = kAXIEStatusFeatureType;
  509.                 break;
  510.             default:
  511.                 break;
  512.         }
  513.  
  514.         if (What != kAXBeginIEFeatureType)
  515.             AX_IEShowFeature(FocusFigure->Site, What, ShowIt);
  516.     }
  517. }
  518.  
  519.  
  520. //
  521. //    DoAboutDialog
  522. //
  523. void DoAboutDialog(void)
  524. {
  525.     DialogPtr    DlogPtr;
  526.  
  527.     if ((DlogPtr = GetNewDialog(ABOUT_DLOG, NULL, (WindowPtr) -1)) != NULL)
  528.     {
  529.         Boolean    Done = false;
  530.         Int16    ItemHit;
  531.  
  532.         //    set dialog behavior
  533.         SetDialogDefaultItem(DlogPtr, OK_BUTTON);
  534.         SetDialogTracksCursor(DlogPtr, true);
  535.  
  536.         //    wait for okay button
  537.         do
  538.             ModalDialog(NULL, &ItemHit);
  539.         while (ItemHit != OK_BUTTON);
  540.  
  541.         DisposeDialog(DlogPtr);
  542.     }
  543. }
  544.  
  545.  
  546. //
  547. //    DoInsertDialog
  548. //
  549. void DoInsertDialog(void)
  550. {
  551.     StandardFileReply    Reply;
  552.  
  553.     StandardGetFile(NULL, 0, NULL, &Reply);
  554.     if (Reply.sfGood)
  555.         NewFigureFromFileSpec((DocDataPtr) GetWRefCon(FrontWindow()),
  556.             &Reply.sfFile, NULL);
  557. }
  558.  
  559.  
  560. //
  561. //    DoFindDialog
  562. //
  563. void DoFindDialog(AXRefID SiteID)
  564. {
  565.     DialogPtr    DlogPtr;
  566.  
  567.     if ((DlogPtr = GetNewDialog(FIND_DLOG, NULL, (WindowPtr) -1)) != NULL)
  568.     {
  569.         Boolean                Done = false;
  570.         Handle                ItemHandle;
  571.         ControlHandle        CHandle;
  572.         Int16                ItemHit;
  573.         AXCanDoFindParams    findInfo;
  574.         Rect                IRect;
  575.         Int16                IType;
  576.         Boolean8            CaseSensitiveSetting = false;
  577.         Boolean8            FromTopSetting = false;
  578.         
  579.         //    set dialog behavior
  580.         SetDialogDefaultItem(DlogPtr, OK_BUTTON);
  581.         SetDialogCancelItem(DlogPtr, CANCEL_BUTTON);
  582.         SetDialogTracksCursor(DlogPtr, true);
  583.  
  584.         //    set dialog fields
  585.         GetDialogItem(DlogPtr, FIND_TEXT, &IType, &(Handle)ItemHandle, &IRect);
  586.         SetDialogItemText(ItemHandle, "\p");
  587.         SelectDialogItemText(DlogPtr, FIND_TEXT, 0, 32767);
  588.         GetDialogItem(DlogPtr, CASE_SENSITIVE_BOX, &IType, &(Handle)CHandle, &IRect);
  589.         SetControlValue(CHandle, 0);
  590.         GetDialogItem(DlogPtr, FROM_TOP_BOX, &IType, &(Handle)CHandle, &IRect);
  591.         SetControlValue(CHandle, 0);
  592.  
  593.         do
  594.         {
  595.             ModalDialog(NULL, &ItemHit);
  596.             switch (ItemHit)
  597.             {
  598.                 case CASE_SENSITIVE_BOX:
  599.                     GetDialogItem(DlogPtr, CASE_SENSITIVE_BOX, &IType, &(Handle)CHandle, &IRect);
  600.                     CaseSensitiveSetting = CaseSensitiveSetting ? 0 : 1;
  601.                     SetControlValue(CHandle, CaseSensitiveSetting);
  602.                     break;
  603.                 case FROM_TOP_BOX:
  604.                     GetDialogItem(DlogPtr, FROM_TOP_BOX, &IType, &(Handle)CHandle, &IRect);
  605.                     FromTopSetting = FromTopSetting ? 0 : 1;
  606.                     SetControlValue(CHandle, FromTopSetting);
  607.                     break;
  608.                 case OK_BUTTON:
  609.                     {
  610.                         Uchar8    FindStr[257];
  611.  
  612.                         GetDialogItemText(ItemHandle, FindStr);
  613.                         *(FindStr + *FindStr + 1) = '\0';
  614.                         findInfo.SearchText = (char *)FindStr + 1;
  615.                         findInfo.CaseSensitive = CaseSensitiveSetting;
  616.                         findInfo.FromTop = FromTopSetting;
  617.                         AX_Do(SiteID, NULL, kAXFindCanDoID, &findInfo);
  618.                     }
  619.                     // deliberate fall through
  620.                 case CANCEL_BUTTON:
  621.                     Done = true;
  622.                     break;
  623.                 default:
  624.                     break;
  625.             }
  626.         }
  627.         while (!Done);
  628.  
  629.         DisposeDialog(DlogPtr);
  630.     }
  631. }
  632.  
  633.  
  634. //
  635. //    DoGoToDialog
  636. //
  637. void DoGoToDialog(AXRefID SiteID)
  638. {
  639.     DialogPtr    DlogPtr;
  640.  
  641.     if ((DlogPtr = GetNewDialog(GOTO_URL_DLOG, NULL, (WindowPtr) -1)) != NULL)
  642.     {
  643.         Boolean    Done = false;
  644.         Handle    ItemHandle;
  645.         Int16    ItemHit;
  646.  
  647.         //    set dialog behavior
  648.         SetDialogDefaultItem(DlogPtr, OK_BUTTON);
  649.         SetDialogCancelItem(DlogPtr, CANCEL_BUTTON);
  650.         SetDialogTracksCursor(DlogPtr, true);
  651.  
  652.         //    set field text
  653.         {
  654.             Rect    IRect;
  655.             Int16    IType;
  656.  
  657.             GetDialogItem(DlogPtr, URL_TEXT, &IType, &ItemHandle, &IRect);
  658.             SetDialogItemText(ItemHandle, "\pwww.microsoft.com");
  659.             SelectDialogItemText(DlogPtr, URL_TEXT, 0, 32767);
  660.         }
  661.  
  662.         do
  663.         {
  664.             ModalDialog(NULL, &ItemHit);
  665.             switch (ItemHit)
  666.             {
  667.                 case OK_BUTTON:
  668.                     {
  669.                         Uchar8    URLStr[257];
  670.  
  671.                         GetDialogItemText(ItemHandle, URLStr);
  672.                         *(URLStr + *URLStr + 1) = '\0';
  673.                         AX_IEGotoURL(SiteID, (char*)URLStr+1, NULL, NULL, NULL, true, true);
  674.                     }
  675.                     // intentional fall through
  676.                 case CANCEL_BUTTON:
  677.                     Done = true;
  678.                     break;
  679.                 default:
  680.                     break;
  681.             }
  682.         }
  683.         while (!Done);
  684.  
  685.         DisposeDialog(DlogPtr);
  686.     }
  687. }
  688.